﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Collections.Specialized;
using System.Net.Mail;
using System.Net.Mime;
using System.IO;
using System.Windows.Forms;

namespace Connect
{
    public class ThuDienTu
    {
        public string Email ="";
        public string Pass ="";
        public string SMTP = "";
        public int Port = 0;
        public ThuDienTu()
        {
            StreamReader reader = new StreamReader(Application.StartupPath + @"\Email.bin");
            this.Email = reader.ReadLine().Split(':')[1];
            this.Pass = reader.ReadLine().Split(':')[1];
            reader.Close();
        }
        public ThuDienTu(string Email,string Pass)
        {
            CheckSMTP(Email);
            StreamReader reader = new StreamReader(Application.StartupPath + @"\Email.bin");
            this.Email = reader.ReadLine().Split(':')[1];
            this.Pass = reader.ReadLine().Split(':')[1];
            reader.Close();
            this.Email = Email;
            this.Pass = Pass;
        }
      public static void  CheckSMTP(string email)
        {
            StreamReader reader = new StreamReader(Application.StartupPath + @"\SMTP.bin");
            //while (reader.Peek>=0)
            //{
                
            //}
           
        }

        public static void WriteInfo(string sEmail,string sPass)
        {
           StreamWriter writer = new StreamWriter(Application.StartupPath + @"\Email.bin");
            writer.WriteLine("Email :" + sEmail);
            writer.WriteLine("Pass :" + sPass);
            writer.Close();
        }

        #region Kiểm tra một hộp thư điện tử có tồn tại không
        /// <summary>
        /// Kiểm tra một hộp thư điện tử có tồn tại không
        /// </summary>
        /// <param name="TenHomThu">Địa chỉ hòm thư</param>
        /// <returns>True : Đã tồn tại   False : Chua sử dụng</returns>
        public static bool KiemTra(string TenHomThu)
        {
            using (WebClient webclient = new WebClient())
            {
                string url = "http://verify-email.org/";
                NameValueCollection formData = new NameValueCollection();
                formData["check"] = TenHomThu;
                byte[] responseBytes = webclient.UploadValues(url, "POST", formData);
                string response = Encoding.ASCII.GetString(responseBytes);
                if (response.Contains("Result: Ok"))
                {
                    return true;
                }
                return false;
            }
        }
        #endregion

        #region Gửi thư điện tử theo phương thức SMTP
         /// <summary>
        /// Gửi thư điện tử theo phương thức SMTP cho GMAIL
        /// </summary>
        /// <param name="DiaChiGui">Đia chỉ Email của người gửi (GMAIL)</param>
        /// <param name="MatKhauGui">Mật khẩu Email của người gửi</param>
        /// <param name="DiaChiNhan">Địa chỉ Email của người nhận</param>
        /// <param name="TieuDe">Tiêu đề bức thư</param>
        /// <param name="NoiDung">Nội dung bức thư</param>
        public static void GuiThu(string DiaChiGui, string MatKhauGui, string DiaChiNhan, string TieuDe, string NoiDung)
        {
            try
            {
                        if ((string.IsNullOrEmpty(DiaChiGui) == true) || (string.IsNullOrEmpty(MatKhauGui) == true) || (string.IsNullOrEmpty(DiaChiNhan) == true) || (string.IsNullOrEmpty(TieuDe) == true) || (string.IsNullOrEmpty(NoiDung) == true))
                        {
                            return;
                        }
                        else
                        {
                            MailMessage message = new MailMessage();
                            SmtpClient client2 = new SmtpClient("smtp.gmail.com");
                            message.From = new MailAddress(DiaChiGui.Replace("@gmail.com"," ").Trim() +"@gmail.com") ;
                            message.To.Add(DiaChiNhan.Replace("@gmail.com", " ").Trim() + "@gmail.com");
                            message.Subject = TieuDe.Trim();
                            message.Body = NoiDung.Trim();
                            client2.Port = 587;
                            client2.Credentials = new NetworkCredential(DiaChiGui.Replace("@gmail.com", " ").Trim() + "@gmail.com",MatKhauGui.Trim());
                            client2.EnableSsl = true;
                            client2.Send(message);
                        }
            }
            catch (Exception)
            {
                 return;
            }
            
        }
        #endregion          

        #region Gửi thư điện tử theo phương thức SMTP
            private SmtpClient smtpClient;
            private string password; 
            private MailMessage mailMessage;
        /// <summary>
        ///Gửi thư điện tử theo phương thức SMTP
        /// </summary>
        /// <param name="To">Địa chỉ đến (có thể dùng dấu , để ngăn cách nhiều địa chỉ</param>
        /// <param name="From">Địa chỉ người gửi</param>
        /// <param name="Body">Nội dung thư</param>
        /// <param name="Title">Tiêu đề thư</param>
        /// <param name="Password">Mật khẩu địa chỉ người gửi</param>
            public void GuiThu2(string To, string From, string Body, string Title, string Password)
        {
            mailMessage = new MailMessage();
            mailMessage.To.Add(To);
            mailMessage.From = new System.Net.Mail.MailAddress(From);
            mailMessage.Subject = Title;
            mailMessage.Body = Body;
            mailMessage.IsBodyHtml = true;
            mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
            mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
            this.password = Password;
        }
              public void Attachments(string Path)  
        {  
            string[] path = Path.Split(',');  
            Attachment data;  
            ContentDisposition disposition;  
            for (int i = 0; i < path.Length; i++)  
            {  
                data = new Attachment(path[i], MediaTypeNames.Application.Octet);//实例化附件  
                disposition = data.ContentDisposition;  
                disposition.CreationDate = System.IO.File.GetCreationTime(path[i]);//获取附件的创建日期  
                disposition.ModificationDate = System.IO.File.GetLastWriteTime(path[i]);//获取附件的修改日期  
                disposition.ReadDate = System.IO.File.GetLastAccessTime(path[i]);//获取附件的读取日期  
                mailMessage.Attachments.Add(data);//添加到附件中  
            }  
        }
              public void SendAsync(SendCompletedEventHandler CompletedMethod)
        {
            if (mailMessage != null)
            {
                smtpClient = new SmtpClient();
                smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据  
                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpClient.Host = "smtp." + mailMessage.From.Host;
                smtpClient.SendCompleted += new SendCompletedEventHandler(CompletedMethod);//注册异步发送邮件完成时的事件  
                smtpClient.SendAsync(mailMessage, mailMessage.Body);
            }
        }
              public void Send()
        {
            if (mailMessage != null)
            {
                smtpClient = new SmtpClient();
                smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据  
                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpClient.Host = "smtp." + mailMessage.From.Host;
                smtpClient.Send(mailMessage);
            }
        }   
        #endregion
    }
}
